package ec.edu.ups.rhc.controlador;

import java.util.List;
import java.util.logging.Logger;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import org.primefaces.event.RowEditEvent;

import ec.edu.ups.rhc.datos.HabitacionDAO;
import ec.edu.ups.rhc.datos.ReservacionDAO;
import ec.edu.ups.rhc.modelo.Habitacion;
import ec.edu.ups.rhc.modelo.Reservacion;


@ManagedBean
@ViewScoped
public class ReservacionBean {

	@Inject private Logger log;
	@Inject	private ReservacionDAO daoReserva;
	@Inject private HabitacionDAO daoHabitacion;
	@Inject FacesContext context ;
	
	private Reservacion reservacion;
	private List<Reservacion> listaReservacion;
	private int idHabitacion;
	/**
	 * Método que se ejecuta posterior a la creación(instancia) del JavaBean 
	 */
	@PostConstruct
	public void init()
	{
		reservacion=new Reservacion();
		listaReservacion=daoReserva.listar();
	}


	/**
	 * Encapsulacion
	 */
	public Reservacion getReservacion() {	return reservacion;	}
	public void setReservacion(Reservacion hotel) {		this.reservacion = hotel;	}

	public List<Reservacion> getListaReservacion() {	return listaReservacion;	}
	public void setListaReservacion(List<Reservacion> listaReservacion) {	this.listaReservacion = listaReservacion;	}
	
	public int getIdHabitacion() {	return idHabitacion;}
	public void setIdHabitacion(int idHabitacion) {this.idHabitacion = idHabitacion;}
	
	/**
	 * Action controllers
	 */
	public String guardar()
	{
		Habitacion habitacion=daoHabitacion.leer(idHabitacion);
		habitacion.setEstado(2);
		daoHabitacion.actualizar(habitacion);
		
		reservacion.setHabitacion(habitacion);
		
		
		daoReserva.insert(reservacion);
		return null;
	}	
	
	public String actualizar()
	{
		daoReserva.actualizar(reservacion);
		context.addMessage(null, new FacesMessage("Guardado exitoso", "Guardado exitoso") );
		return null;
	}
	
	public void editListener(RowEditEvent event) {
		reservacion= (Reservacion) event.getObject();
		this.actualizar();
	}
	public String eliminar(Reservacion rev)
	{
		this.reservacion=rev;
		reservacion.setEstado(-1);
		actualizar();
		this.listaReservacion.remove(reservacion);
		return null;
	}
}
